package _17_剑指Offer;

public class _11_剑指Offer旋转数组的最小数字 {

    public static void main(String[] args) {

        _11_剑指Offer旋转数组的最小数字 v = new _11_剑指Offer旋转数组的最小数字();

        // 3 4
        int[] ins = new int[]{3, 3, 1, 3};

        System.out.println(v.minArray(ins));

    }

    public int minArray(int[] numbers) {
        int begin = 0;
        int end = numbers.length - 1;
        while (begin < end) {
            int mid = begin + end >> 1;
            if (numbers[mid] > numbers[end]) {
                // 最小值趋近于右边
                begin = mid + 1;
            } else if (numbers[mid] < numbers[end]){
                // 最小值趋近于左边
                end = mid;
            } else {
                end--; // 去重操作
            }
        }
        return numbers[begin];
    }

}
